package com.ndp.fb.mq.api.service.publishhandleservice;

import com.ndp.fb.redis.model.AdPublishCache;

/**
 * 广告发布前置流程
 * 检查发布的 cache 是否符合可发布的参数需求
 * 每个handle完成自己所负责需要检查的cache中的一块，并负责刷新 cache
 * eg
 * 视频广告发布前 检查账号下是否有视频id，如果没有则完成上传，刷新cache
 * 前置的流程因可能有一定的顺序性，不并发执行，为顺序执行
 *
 * 任何一个 前置 handle 异常，会导致整个前置流程异常，并阻断广告发布
 * 输出异常条件到广告发布的失败原因中。
 *
 * 所有前置handle执行完成后，更新批次到可发布状态
 *
 * 需要新增发布流程中一个状态，为 预发布状态，和预发布中。
 *
 * Created by hunk.qin on 2016/1/13.
 */
public interface PublishPreProcessor {


    /**
     * 刷新Cache
     * 如果返回String不为true，则表示有异常则表示执行失败，会中断所有的前置流程，并设置整个批次失败
     * @param batchId
     */
    String refreshCache(String batchKey,Long batchId,AdPublishCache cache);

    /**
     *
     * 检查是否需要执行该handle，如果需要 返回 true，如果返回false
     * 该handle自动忽略，不执行。
     * @param cache
     */

     boolean check(AdPublishCache cache);


}
